package com.kgc.dao.mapper.admin;

import com.kgc.entity.Role;
import com.kgc.entity.User;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * @author hyj
 * @time 2024/4/6 14:11
 * @describe
 */

public interface AdminRoleMapper {
    /**
     * 获取所有用户及权限
     *
     * @return 用户列表
     */
    @Select("select u.user_id,u.username,u.created_at,ur.role_id,r.rolename from users u natural join user_roles ur natural join roles r order by u.user_id")
    List<User> getAll();

    /**
     * 添加新角色
     *
     * @param roleName 角色名
     * @return 1:success 0:fail
     */
    @Insert("insert into roles(role_name) values(#{roleName})")
    Integer insertRole(String roleName);

    /**
     * 给用户添加新角色
     *
     * @param userId 用户id
     * @param roleId 角色id
     * @return 1:success 0:fail
     */
    @Insert("insert into user_roles(user_id,role_id) values(#{userId},#{roleId})")
    Integer insertUserAndRole(@Param("userId") Integer userId, @Param("roleId") Integer roleId);

    /**
     * 删除用户
     *
     * @param userId 用户id
     * @return 1:success 0:fail
     */
    @Delete("delete from user_roles where user_id=#{userId}")
    Integer deleteUserAndRole(Integer userId);

    /**
     * 更新用户某个角色
     *
     * @param userId 用户id
     * @param roleId 角色id
     * @return 1:success 0:fail
     */
    @Update("update user_roles set role_id=#{roleId} where user_id=#{userId}")
    Integer updateUserAndRole(@Param("userId") Integer userId, @Param("roleId") Integer roleId);

    /**
     * 获取所有角色
     *
     * @return 角色列表
     */
    @Select("select * from roles")
    List<Role> roles();

    /**
     * 获取用户角色
     *
     * @param userId 用户id
     * @return 列表
     */
    @Select("select u.user_id,ur.role_id,r.rolename from users u natural join user_roles ur natural join roles r where user_id=#{userId}")
    List<Role> rolesByUserId(Integer userId);
}
